// new 手写
function Person(name, age){
    //{}
    //函数运行过程就是构造对象过程
    this.name=name;
    this.age=age;
//return{}
}

Person.prototype.say= function(){
    console.log(this.age);
}

// let p2 = new Person('袁静'，18)
 let p2={};
 console.log(p2.__proto__);
 // p2.__proto__  = Object
 
 p2 = new Person('赖总', 18);
 console.log(Object.hasOwnProperty('say'),Person.hasOwnProperty('say'))
 //p2 ? 做了什么事情？ 给？
//  p2.__proto__  Object -> Person.prototype
// js 是原型对式的面向对象
// p2 的原型对象， 由 默认 Object 中间插入Person.prototype
// p2.say() p2不含say ,在原型链里面寻找

//手写new
//new Person
// reset 运算符
function myNew(fn,...arges){
    // console.log(fn,arges)
      let obj = Object.create(fn.prototype)
      console.log(obj,'--------', obj.__proto__)
    //obj上， this 属性？
    // 构造过程 函数运行一下，并且this 指向obj
   Person.call(obj,...arges)
   console.log(obj,'-------')
    //  返回 对象
  return obj;
}
let p3 = myNew(Person, '袁静',18)
console.log(p3)